// pages/system/sys.js
const dbUtilsList = require('../interface/interfaceData-list');

Page({
  /**
   * 页面的初始数据
   */
  data: {
    teamname: "计算机科学与工程学院",
    schedules: [],
    totalLoaded: 0, // 已加载的数据总数
    loading: false, // 是否正在加载数据
    hasMoreData: true, // 是否还有更多数据可以加载
    selectedItem: 1, // 初始选中的按钮，默认为第一个按钮
    items: [
      { id: 1, title: "全部", textColor: 'black' },
      { id: 2, title: "A组", textColor: 'black' },
      { id: 3, title: "B组", textColor: 'black' },
      { id: 4, title: "C组", textColor: 'black' },
      { id: 5, title: "D组", textColor: 'black' },
      { id: 6, title: "排位赛", textColor: 'black' }
    ]
  },


  //上拉触底数据加载函数
  onReachBottom: async function () {
    if (!this.data.hasMoreData) return; // 如果没有更多数据，则直接返回
  
    if (this.data.selectedItem === 1) {
      await this.findAll(); // 加载更多“全部”数据
    } else {
      const type = ['A', 'B', 'C', 'D', 'E'][this.data.selectedItem - 2];
      await this.findgroup(type); // 加载更多特定组的数据
    }
  },
  // 查找所有数据
  findAll: async function () {
    if (this.data.loading) return; // 如果已经在加载数据，则直接返回
    this.setData({ loading: true }); // 设置加载状态为 true
    try {
      const limit = 10; // 每次加载的数据条数
      const offset = this.data.totalLoaded; // 当前已加载的数据总数，作为偏移量
      const matches = await dbUtilsList.getDataWithLimitAndOffset("team", limit, offset);
  
      if (matches.length === 0) {
        this.setData({ loading: false }); // 没有更多数据，关闭加载状态
        return;
      }
  
      const sortedMatches = this.sortEvents(matches);
      this.setData({
        schedules: [...this.data.schedules, ...sortedMatches],
        totalLoaded: this.data.totalLoaded + matches.length,
        loading: false // 加载完毕后关闭加载状态
      });
  
      if (this.data.totalLoaded >= 27) { // 假设总数据条数为27
        this.setData({ hasMoreData: false }); // 设置没有更多数据
      }
  
      console.log("获取数据成功", sortedMatches);
    } catch (error) {
      console.error('数据获取失败:', error);
      this.setData({ loading: false }); // 加载失败后关闭加载状态
    }
  },

  // 新增方法：重置状态变量
resetState() {
  this.setData({
    schedules: [],
    totalLoaded: 0,
    loading: false,
    hasMoreData: true
  })
},


  handleItemClick(e) {
    const itemId = e.currentTarget.dataset.id;
    this.resetState()
    if(itemId == 1){
      this.findAll();
    }
    else if (itemId == 2) {
      this.findgroup('A');
    } else if (itemId == 3) {
      this.findgroup('B');
    } else if (itemId == 4) {
      this.findgroup('C');
    } else if (itemId == 5) {
      this.findgroup('D');
    } else if (itemId == 6) {
      this.findgroup('E');
    }

    // 更新 selectedItem
    this.setData({
      selectedItem: itemId
    });

    // 更新 items 数组中的 textColor
    const items = this.data.items.map(item => ({
      ...item,
      textColor: item.id === itemId ? '#0000FF' : '#000000'
    }));

    // 更新数据
    this.setData({
      items: items
    });
  },

  findgroup: async function (type) {
    try {
      const result = await dbUtilsList.getDataWhere("team", { grouptype: type });
      // 对数据进行排序
      const sortedResult = this.sortEvents(result);
      this.setData({
        schedules: sortedResult
      });
    } catch (error) {
      console.error('数据获取失败:', error);
    }
  },

  /**
   * 解析日期字符串为 Date 对象
   */
  parseDate(timeStr) {
    const match = timeStr.match(/(\d{4})年(\d{1,2})月(\d{1,2})日.*?(\d{1,2}):(\d{2})/);
    if (match) {
      return new Date(match[1], match[2] - 1, match[3], match[4], match[5]);
    }
    return null;
  },

  /**
   * 根据时间对事件进行排序
   */
  sortEvents(events) {
    return events.sort((a, b) => {
      const dateA = this.parseDate(a.time);
      const dateB = this.parseDate(b.time);
      if (dateA && dateB) {
        return dateA - dateB;
      }
      return 0;
    });
  },


  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {
    console.log("页面初次渲染");
    this.findAll();
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    console.log('页面显示');
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {
    console.log('页面隐藏');
    // 清理定时器
    if (this.timer) {
      clearInterval(this.timer);
    }
  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    console.log('用户下拉刷新');
    // 重新加载数据
    // this.findAll();
    wx.stopPullDownRefresh();
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  // onReachBottom() {
  // },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {
    return{
      title: '湖南工学院教职工篮球赛2024',
      path: '/pages/system/sys',
      imageUrl: '/pages/img/share.jpg'
    };
  }
});